package cn.bugstack.domain.activity.service.discount.Impl;

import cn.bugstack.domain.activity.model.valobj.GroupBuyActivityDiscountVO;
import cn.bugstack.domain.activity.service.discount.AbstractDiscountCalculateService;
import cn.bugstack.types.common.Constants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;

@Slf4j
@Service("MJ")
public class MJCalculateService extends AbstractDiscountCalculateService {

    @Override
    protected BigDecimal docalculate(BigDecimal originalPrice, GroupBuyActivityDiscountVO.GroupBuyDiscount groupBuyDiscount) {
        log.info("优惠策略折扣计算：{}" , groupBuyDiscount.getDiscountType().getCode());
        String maketExpr = groupBuyDiscount.getMarketExpr();// 获得计算公式
        /*
        *  maketExpr 字符串按照 Constants.SPLIT 常量定义的分隔符进行分割，结果是一个字符串数组 split。这个数组将包含两个元素，
        * 第一个元素是折扣计算公式中的 x 值（例如，满减条件），第二个元素是 y 值（例如，折扣金额）。
        * */
        String[] split = maketExpr.split(Constants.SPLIT); // 貌似maketExpr是一个String，Constants.SPLIT是一个char，就是一个逗号
        BigDecimal x = new BigDecimal(split[0]);           // 因为数据库里面 满减MJ 存储的maketExpr是String 100,10这样的
        BigDecimal y = new BigDecimal(split[1]);
        if(originalPrice.compareTo(x) < 0){// 如果不满足满减
            return originalPrice;
        }
        BigDecimal deductionPrice = originalPrice.subtract(y);

        return filterZero(deductionPrice);
    }
}
